#include<bits/stdc++.h>
#define f first
#define pr pair
#define s second
#define ll long long
#define mp make_pair
#define pll pr<ll,ll>
#define pii pr<int,int>
#define piii pr<int,pii>
using namespace std;
int a[100005];
int b[150005];
int c[100005];
int k;
bool us[17][150005];
int kx[4];
int lm;
int mi;
ll rew[20];
ll ans[150005];
ll tp;
int sol(int d,int l,int r)
{
    if(d==-1)
    {
        int g=min(mi,b[l])+1;
        ans[l]=rew[g]+tp;
        if(b[l]>=lm) ans[l]+=l+1;
//        cout<<"Fd "<<l<<' '<<b[l]<<' '<<mi<<"  "<<g<<' '<<rew[g]<<' '<<tp<<' '<<lm<<"  "<<ans[l]<<endl;
        return l;
    }
    int m=(l+r)/2;
    if(us[d][l])
    {
        int rm=mi;
        mi=d;
        tp+=1ll*(r-m)*(r+m+1)/2;
        rew[d]=rew[d+1];
        int g=sol(d-1,l,m);
        mi=rm;
        tp-=1ll*(r-m)*(r+m+1)/2;
//
        rm=lm;
        if(b[g]>=lm) rew[d]=/*rew[d+1]+*/g+1;
        else rew[d]=rew[d+1];
        lm=max(lm,d);
//        cout<<" UPD "<<d<<' '<<rew[d]<<endl;
        int h=sol(d-1,m,r);
        lm=rm;
        if(b[h]<d) return g;
        else return h;
    }
    else
    {
        int rm=lm;
        lm=max(lm,d);
        rew[d]=rew[d+1]+1ll*(r-m)*(r+m+1)/2;
        int g=sol(d-1,l,m);
        lm=rm;
//
        if(b[g]>=d)
        {
            int h=min(mi,b[g])+1;
            ll fd=rew[h]+tp;
            if(b[g]>=lm) fd+=g+1;
            for(int i=m;i<r;i++) ans[i]=fd;
            return g;
        }
        rew[d]=rew[d+1];
        int h=sol(d-1,m,r);
        return h;
    }
}
int n,m;
void sl()
{
    cin>>kx[3]>>kx[0]>>kx[1]>>kx[2];
    for(int i=0;i<n;i++) b[i]=a[i]^kx[i%4],b[i]--;
//    sol(k-1,0,1<<k);
//    for(int i=0;i<n;i++) cout<<ans[i]<<' ';
//    cout<<endl;
    for(int i=k;i>=0;i--)
    {
        lm=-1;
        tp=0;
        mi=18;
        for(int j=0;j<20;j++) rew[j]=0;
        sol(i-1,0,1<<i);
    }
    ll op=0;
//    for(int i=0;i<n;i++) cout<<ans[i]<<' ';
//    cout<<endl;
    for(int i=0;i<m;i++)
    {
        op^=(i+1)*ans[c[i]];
    }
    cout<<op<<endl;
}
int main()
{
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin>>n>>m;
    for(int i=0;i<n;i++) cin>>a[i];
    for(int i=0;i<m;i++) cin>>c[i],c[i]--;
    for(;1<<k<n;k++);
    char rd;
    for(int i=0;i<k;i++) for(int j=0;j<1<<k;j+=1<<(i+1)) cin>>rd,us[i][j]=rd=='1';
    int t;
    cin>>t;
    while(t--) sl();
    return 0;
}/*5 5
0 0 0 0 0
5 4 1 2 3
1001
10
1
4
2 1 0 0
1 2 1 0
0 2 3 1
2 2 0 1
*/
